<?php

function apply_patch($patch)
{
	$config_php = $patch->site_dir.'etc/conf.d/db.php';
	include ($config_php);
	require_once 'UpMysql.php';
	$db = new UpMysql($config);
	if (!$db->init()) {
		$patch->error = $db->error;
		return false;
	}
	$patch->db = $db;
	$status = true
		&& update_db_schema($patch)
		&& update_config_php($patch)
		&& update_mkdir_data_thumbs($patch)
		;
	return $status;
}

// 1.3.3
/**
 * update_db_schema обновление схемы DB.
 *
 * @param mixed $patch
 * @access public
 * @return boolean
 */
function update_db_schema ($patch)
{
	require_once 'MysqlImport.php';
	$patch_sql = $patch->patch_dir . 'patch.sql';
	$sql = file_get_contents($patch_sql);

	$prefix = $patch->db->db_prefix;
	$sql = str_replace('{{prefix}}', $prefix, $sql);

	$m = new MysqlImport(array('import_text' => $sql, 'db' => $patch->db));
	$status = $m->process();
	if (!$status) {
		$patch->error = $m->error;
	}
	return $status;
} // end of function update_db_schema

function update_config_php($patch)
{
	// etc/config.php
	//
	// + project_link_title -- название ссылки на титульную сайта.
	// + use_search         -- использовать поиск.
	// + search_in_comments -- искать в комментариях.

	$config_php = $patch->site_dir.'etc/config.php';
	include ($config_php);
	require_once 'ConfigPhp.php';
	copy ($patch->site_dir.'etc/config.php.sample', $config_php);
	$cfg = new ConfigPhp(array('source' => $config_php));
	foreach ($self as $k=>$v) {
		$cfg->setParam($k, $v);
	}

	return true;
}

function update_mkdir_data_thumbs($patch)
{
	// #743 создадим директорию /data/thumbs/ для хранения данных плагина !thumb
	// если еще нет.

	$path = $patch->site_dir.'data/thumbs';

	if (is_dir($path)) {
		$status = true;
	} else {
		$status = mkdir ($path, 0755);
	}

	return $status;
}

// FIXME : 2008-08-28 : lucky
// для всех квестов создать ACL в конексте сообщества.
// как-то так
/*
	$aa = $this->mm->aa;
	$parent_oid = $aa->acl_data['comity_oid'];
	// прописывает в субъекты и в acl
	$aa->createItem( $obj->id, $parent_oid );
	// для автора права

	$aa->setAcl($obj->id, array('item_edit' => 1, 'item_delete' => 1));
 */


